namespace Communication
{
    /// <summary>
    /// Contains information about a GSM network operator.
    /// </summary>
    public class OperatorInfo
    {
        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        /// <param name="format">The format in which <b>theOperator</b> is specified in. See OperatorFormat
        /// for a list of possible values.
        /// </param>
        /// <param name="theOperator">The operator in the format specified by <b>format</b></param>
        public OperatorInfo(OperatorFormat format, string theOperator)
        {
            Format = format;
            TheOperator = theOperator;
            AccessTechnology = string.Empty;
        }

        /// <summary>
        /// Initializes a new instance of the class.
        /// </summary>
        /// <param name="format">The format in which <b>theOperator</b> is specified in. See OperatorFormat
        /// for a list of possible values.
        /// </param>
        /// <param name="theOperator">The operator in the format specified by <b>format</b></param>
        /// <param name="accessTechnology">The access technology registered to.</param>
        public OperatorInfo(OperatorFormat format, string theOperator, string accessTechnology)
        {
            Format = format;
            TheOperator = theOperator;
            AccessTechnology = accessTechnology;
        }

        /// <summary>
        /// Gets the access technology registered to.
        /// </summary>
        /// <remarks>This is optional, as it is only useful for terminals capable to register to more than
        /// one access technology.</remarks>
        public string AccessTechnology { get; private set; }

        /// <summary>
        /// Gets the format in which OperatorInfo.TheOperator is specified in.
        /// </summary>
        public OperatorFormat Format { get; private set; }

        /// <summary>
        /// Gets the operator in the format specified by OperatorInfo.Format.
        /// </summary>
        public string TheOperator { get; private set; }
    }
}